﻿//-------------------------------------------------------------------
//	Copyright (c) 2012 Fedotov I.V.
//	All rights reserved.
//-------------------------------------------------------------------
/*
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public License
	along with this program. If not, see http://www.gnu.org/licenses/.

	Project SVN page 
*/

#ifndef __USTRING_H__
#define __USTRING_H__

#include <stdio.h>
#include <string.h>
#include <vector>

#include "../datacontainerbase.h"
#include "../filecontainer.h"
#include "../../sptr.h"

class UString : public DataContainerBase{

private:


	
public:

	wstring wstr;

  //Присутствующие здесь функции должны быть и в аналогичных классах (наследованных от DataContainer)
	//для того чтобы работал класс ResourceManager (некоторые шаблоны функций)

  UString();
	UString(__int64 _ID);
	~UString();

	//считывает в этот объект данные из контейнера fc
	//Тип контейнера для parse должен совпадать с типом этого объекта
	long parse();
	//считывает в этот объект данные из внешнего источника
	//(прямо из containerData)
	//_inFileContainer - контейнер с данными (!=CT_CONTAINER), среди данных которого со смещением
	//_offsetInData расположены данные, задаваемые для parse
	//(_offsetInData - смещение относительно данных (не самого контейнера))
	//Возвращает размер считанных данных (>=0)
	//В случае ошибки возвращает отрицательное число
	//Тип контейнера для parse может не совпадать с типом этого объекта, так как анализируются только данные
	//в контейнере (containerData)
	long parse(SPtr<FileContainer> _inFileContainer,long _offsetInData);
	//записывает данные в контейнер fc
	int join();

	//Ищет все требуемые объекты в ResourseManager по их идентификаторам и
	//устанавливает SPtr на них в этом объекте
	//(если объекту требуются такие указатели)
	//Функция создана для того чтобы после загрузки всех файлов одновременно
	//установить указатели на все требуемые объекты всем объектам одновременно
	int checkAndSetObjectsAtIDs();

};


#endif